package com.ch09;

/**
 * @ClassName Teacher
 * @Description TODO
 * @Author Kx
 * @Date 2025/4/17 16:09
 * @Version 1.0
 */
public abstract class Teacher {
    public void call() {
        System.out.println("上课点名");
    }

    /***
     * @author: kx
     * @date: 2025/4/17 16:10
     * @description: 抽象的上课方法,由子类实现
    */
    public abstract void lessons();

    /***
     * @author: kx
     * @date: 2025/4/17 16:11
     * @description: 抽象的作业布置方法,由子类实现
    */
    public abstract void homework();

    /*** 
     * @author: kx
     * @date: 2025/4/17 16:12
     * @return boolean
     * @description: 钩子方法,子类重写该方法实现剔除想要执行的步骤
    */
    public boolean hock() {
        return true;
    }

    /***
     * @author: kx
     * @date: 2025/4/17 16:11
     * @description: 模版方法,统一执行的顺序
    */
    public void work() {
        call();
        lessons();
        // 判断是否需要执行该方法
        if (hock()) {
            homework();
        }
    }
}
